ABC173 C - H and V
問題
コード
リファクタリングして割には、それなりにシンプルに書けてると思う
解答
メモ
はじめの認識が間違ってた
「これで間違いなく動く」と思ってtestしたらpassしなくて、問題文を読み返したら認識が間違ってた
はじめの認識は$ (H+1)×(W+1)通り
「行を塗らない、1行目を塗る、2行目を塗る、...、H行目を塗る」から1つ選択
「列を塗らない、1列目を塗る、2列目を塗る、...、W列目を塗る」から1つ選択
実際は、$ 2^{H + W} 通り
「1行目を塗る or 塗らない」
「2行目を塗る or 塗らない」
…
「i行目を塗る or 塗らない」
「1列目を塗る or 塗らない」
「2列目を塗る or 塗らない」
…
「j列目を塗る or 塗らない」
itertools.productで返される値がイテレータであることを失念していて、バグを見つけるのに時間がかかってしまった
イテレータはメモリの面で有用だけど、使うときは気を付けないといけない……